// **********************************************************************
//
// <copyright>
//
//  BBN Technologies
//  10 Moulton Street
//  Cambridge, MA 02138
//  (617) 873-8000
//
//  Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/gui/MapPanel.java,v $
// $RCSfile: MapPanel.java,v $
// $Revision: 1.4 $
// $Date: 2004/10/14 18:05:48 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.gui;

import com.bbn.openmap.MapBean;
import com.bbn.openmap.MapHandler;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

/**
 * The MapPanel is a interface describing a component that contains a MapBean, MapHandler, menu widgets and all the
 * other components connected to make an OpenMap map widget. A MapPanel is a self-contained OpenMap Swing component. It
 * is expected that the MapPanel will extend from java.awt.Container. If it doesn't, it might not be automatically added
 * to the OpenMapFrame or OpenMapApplet if it is found in the MapHandler.
 */
public interface MapPanel {

	/**
	 * Get the MapBean used for the MapPanel.
	 */
	public MapBean getMapBean();

	/**
	 * Get the MapHandler used for the MapPanel. You should be able to use the MapHandler to get to any component used
	 * in the MapPanel.
	 */
	public MapHandler getMapHandler();

	/**
	 * Get a JMenuBar containing menus to control the map. If you call this, don't call getMapMenu.
	 */
	public JMenuBar getMapMenuBar();

	/**
	 * Get a JMenu containing sub-menus to control the map. If you call this, don't call getMapMenuBar.
	 */
	public JMenu getMapMenu();

	/**
	 * Tell the panel to release components.
	 */
	public void dispose();

	/**
	 * Add an object to the MapHandler in the MapPanel.
	 *
	 * @param obj any object
	 */
	public void addMapComponent(Object obj);
}
